iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Security

資安這條路:系統化學習藍隊技術系列 第 25

Day25:藍隊提升技術力:數位鑑識 (7)─針對 Windows 數位鑑識尋找有用資訊

  • 分享至 

  • xImage
  •  

Windows 數位鑑識:情境、流程與工具

情境與時機:為什麼要針對 Windows 做數位鑑識

針對 Windows 作業系統的攻擊較常見,在發生資安事件時,數位鑑識需要先收集、保存、分析數位證據,以調查事件原因、追蹤攻擊者、評估損失和採取補救措施。

以下是一些需要進行 Windows 數位鑑識的常見情境:

  1. 資安事件調查
    • 當懷疑發生資料外洩、惡意軟體感染、釣魚攻擊或其他資安事件時,需要進行數位鑑識以確定事件的根本原因、攻擊者的身份和受影響的範圍。
    • 案例:某公司發現客戶資料被洩露到暗網。透過對相關 Windows 系統進行數位鑑識,發現了一個員工的電腦被植入了鍵盤記錄器,導致了資料外洩。
  2. 內部威脅調查
    • 當懷疑員工從事資料竊取、間諜行為或其他惡意行為時,需要進行數位鑑識以收集證據並確定事件的真相。
    • 案例:一家科技公司懷疑某員工將機密技術資料外傳給競爭對手。透過分析該員工的 Windows 電腦,發現了大量敏感檔案被複製到外部儲存設備的記錄。
  3. 法律訴訟
    • 在涉及商業糾紛、智慧財產權侵權或其他法律訴訟的案件中,數位鑑識可以用於收集和保存證據,以支援訴訟或辯護。
    • 案例:在著作權侵權案件中,原告聲稱被告公司非法使用了其軟體程式碼。透過對被告公司的 Windows 系統進行數位鑑識,找到了含有原告程式碼的檔案及其使用歷史,為訴訟提供了關鍵證據。
  4. 惡意軟體分析
    • 當系統被感染惡意軟體時,數位鑑識可以幫助分析惡意軟體的行為、來源和影響範圍。
    • 案例:某政府機構的網路遭受勒索軟體攻擊。透過對受感染的 Windows 系統進行數位鑑識,不僅找到了惡意軟體的入口點,還追蹤到了攻擊者的 IP 地址。
  5. 系統入侵調查
    • 當發現系統被未授權存取時,數位鑑識可以幫助確定入侵者的身份、行為和可能造成的損害。
    • 案例:一家銀行發現其內部系統被入侵。透過對 Windows 伺服器的日誌和系統檔案進行分析,發現了攻擊者利用了一個未修補的漏洞進行入侵,並嘗試存取客戶資料庫。
  6. 員工離職調查
    • 當關鍵員工離職時,可能需要進行數位鑑識以確保沒有公司機密資料被不當複製或刪除。
    • 案例:一名工程師離職後,公司懷疑他帶走了核心技術資料。透過對其曾使用的 Windows 工作站進行數位鑑識,發現了大量檔案在離職前被複製到個人雲端空間的記錄。

Windows 相關的重要檔案

在進行數位鑑識時,Windows 有哪一些有關使用者行為和系統事件的資訊:

1. LNK 檔案

LNK 檔案是 Windows 作業系統用來連結兩個檔案的機制,就像應用程式捷徑一樣,可以重新導向到檔案系統中應用程式所在的實際位置並執行。

透過分析 LNK 檔案,調查人員取得檔案的連結目標位置、建立日期、修改日期、最後存取日期以及檔案大小

這些資訊有助於了解使用者如何以及何時存取檔案,進而識別潛在的資料外洩或未經授權的存取行為

  1. 使用 Windows 檔案總管找到 LNK 檔案
    • LNK 紀錄檔案通常位於
      • C:\Users\$USER$\AppData\Roaming\Microsoft\Windows\Recent
    • 步驟
      • 開啟命令提示字元
      • 輸入 cd AppData\Roaming\Microsoft\Windows\Recent
      • 輸入 dir

image

  • 時間軸分析: 透過分析 LNK 檔案的建立、修改和最後存取時間,調查人員可以建立一個事件發生的時間軸,例如使用者何時下載了惡意檔案、何時打開了可疑的郵件等。
  • 使用者行為分析: 透過分析 LNK 檔案的連結目標位置,調查人員可以了解使用者的活動模式,例如使用者經常存取哪些網站、經常使用哪些應用程式等,進而推斷使用者的意圖和行為。
  • 關聯分析: 將 LNK 檔案的分析結果與其他數位證據(例如瀏覽器歷史記錄、預讀檔案等)進行關聯分析,可以更全面地了解事件的來龍去脈。
    • 例如,在一個案例中,調查人員將 LNK 檔案的分析結果與瀏覽器歷史記錄進行關聯分析,發現使用者是在存取了一個可疑的網站後才下載了惡意檔案。

2. 預讀檔案

預讀檔案儲存有關程式執行情況的資訊,例如應用程式名稱、可執行檔路徑、上次執行時間,以及建立或安裝時間。這些檔案有助於調查人員了解哪些程式已在系統上使用,以及使用頻率。

下載檔案
https://ericzimmerman.github.io/#!index.md

  1. 利用管理員開啟命令提示字元
  2. 下指令 dir C:\Windows\Prefetch

image

  1. 分析特定的預讀檔案
PECmd.exe -f "C:\Windows\Prefetch\7ZG.EXE-F49B3D46.pf"

image

PECmd 分析結果與資訊

  1. 基本資訊
    • 執行檔名稱:7ZG.EXE(7-Zip 圖形介面)
    • 建立時間:2023-12-28 07:33:57
    • 最後修改時間:2024-10-04 14:22:29
    • 最後存取時間:2024-10-09 14:45:08
    • 執行次數:23次
    • 最後執行時間:2024-10-04 14:22:26
  2. 執行歷史
    程式在過去幾個月內被多次使用,最早的記錄是 2024-06-11,最近的是 2024-10-04。 7-Zip 是使用者經常使用的工具。
  3. 系統環境
    執行在 Windows 10 或 Windows 11 系統上,使用繁體中文介面(基於 ZH-TW 語言包的存在)。
  4. 存取的目錄和檔案
    a. 系統檔案:大多數是正常的系統 DLL 和設定檔案。
    b. 7-Zip 相關檔案:包括主程式和語言包。
    c. 特殊檔案
    • \USERS\USER\DOWNLOADS\IOTGOAT-X86.IMG.GZ:IoT 相關的映像檔案,可能用於測試或教育目的。
    • $MFT:主檔案表被存取,這可能是正常的檔案系統操作。
  5. 值得注意的點
    a. 有明顯的可疑或惡意檔案被存取
  6. 分析結論
    a. 使用者行為:經常使用 7-Zip 處理檔案,主要用於操作可能的 IoT 測試映像。
    b. 安全性考慮:沒有明顯的惡意活動跡象。IoTGoat 映像可能用於合法的安全測試或學習。
    c. 隱私和合規性:存取的檔案主要是系統檔案和使用者自己的檔案,沒有明顯的隱私問題。
  7. 建議
    • 確認 IoTGoat 映像的使用目的,確保它用於合法目的。
    • 考慮查看其他常用程式的 Prefetch 檔案,以獲得更全面的系統使用情況。

3. 跳躍清單檔案

跳躍清單儲存有關釘選到工作列之應用程式的資訊,包括檔案路徑、時間戳記和應用程式識別碼 (AppID)。這

些檔案可以協助調查人員重建使用者行為的時間軸,並識別經常使用的應用程式。

  1. 下載 JumpList Explorer
  2. 可能需要安裝相依套件
    • image
  3. 開啟之後匯入資料
    • C:\Users\% USERNAME%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
    • image
    • 查看詳細資訊,包括存取的檔案、時間戳等

4. 瀏覽器記錄

瀏覽器儲存大量與使用者網路行為相關的資訊,例如瀏覽過的網站、存取時間、下載的檔案、搜尋查詢和快取的資料。

這些資訊對於調查網路相關事件 (例如資料外洩、惡意軟體感染或網路釣魚攻擊) 非常有價值。

  • 步驟
  • 其他工具
    • KAPE (Kroll Artifact Parser and Extractor):
    • Browser History Capturer

5. Windows 事件記錄

Windows 事件記錄會記錄與各種系統行為相關的事件,包括使用者登入、檔案修改和系統錯誤。

  1. 使用內建的 Windows 事件檢視器:
    • 按 Win+R, 輸入 eventvwr.msc, 按 Enter
    • 展開 "Windows Logs"
    • 選擇要查看的日誌類型 (如 "Security", "System" 等)
    • 在右側中,可以看到詳細的事件記錄
  2. 使用 wevtutil 以管理員身份執行
    • wevtutil el 列出所有事件日誌
    • wevtutil epl Security C:\output\Security.evtx 匯出特定的事件日誌
      • image
  3. 使用 PowerShell 查詢特定事件:
    • 打開 PowerShell (以管理員身份執行)
      image
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} | 
    Select-Object -First 10 |
    Select-Object TimeCreated,
        @{Name='UserName';Expression={$_.Properties[5].Value}},
        @{Name='LogonType';Expression={$_.Properties[8].Value}},
        @{Name='Status';Expression={$_.Properties[8].Value}},
        @{Name='SourceIP';Expression={$_.Properties[18].Value}} | 
    Format-List

6. 資源回收筒

資源回收筒儲存已刪除的檔案和資料夾,直到它們被永久刪除。

調查人員可以從資源回收筒中恢復已刪除的檔案,
以恢復可能已刪除的證據或分析使用者意圖。

  1. 查看資源回收筒內容
    • 打開檔案總管
    • 在網址欄輸入 C:\$Recycle.Bin
    • 按 Enter 鍵,查看資源回收筒中的檔案
  2. 使用命令提示字元 (CMD) 查看資源回收筒
    • 打開命令提示字元 (以管理員身份執行)
    • 執行以下命令:
      dir /a/s /b C:\$Recycle.Bin
      
  3. 使用 RBCmd 工具分析資源回收筒:
    • 下載 RBCmd (可從 Eric Zimmerman 的工具集獲得)
    • 打開命令提示字元 (以管理員身份執行)
    • RBCmd 所在的資料夾
    • 執行以下命令:
      RBCmd.exe -d C:\$Recycle.Bin --csv "C:\output"
      
  4. 使用 PowerShell 分析資源回收筒
    • 打開 PowerShell (以管理員身份執行)
    • 執行以下命令:
# 建立輸出目錄(如果不存在)
$outputDir = "C:\output"
New-Item -Path $outputDir -ItemType Directory -Force | Out-Null

# 定義日誌文件路徑
$logFile = Join-Path $outputDir "RecycleBin_Analysis_Log.txt"

# 函數:寫入日誌
function Write-Log {
    param([string]$message)
    Add-Content -Path $logFile -Value "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss'): $message"
}

Write-Log "開始分析回收筒內容"

Get-ChildItem -Path "C:\`$Recycle.Bin" -Force -Recurse | 
    Where-Object { $_.Name -match '^\$R' } | 
    ForEach-Object {
        try {
            $deletedFile = $_
            if ($null -eq $deletedFile.Name -or $deletedFile.Name.Length -lt 3) {
                Write-Log "警告:檔案名稱無效 - $($deletedFile.FullName)"
                return
            }

            $infoFileName = "$($deletedFile.Directory.FullName)\`$I$($deletedFile.Name.Substring(2))"
            if (Test-Path $infoFileName) {
                $originalPath = (Get-Content $infoFileName -Encoding Unicode -ErrorAction Stop)[0]
            } else {
                Write-Log "警告:找不到對應的資訊檔案 - $infoFileName"
                $originalPath = "未知"
            }

            [PSCustomObject]@{
                OriginalFileName = $originalPath
                DeletedFileName = $deletedFile.FullName
                Size = $deletedFile.Length
                DeletedTime = $deletedFile.LastWriteTime
            }
        } catch {
            Write-Log "錯誤處理檔案 $($deletedFile.FullName): $_"
        }
    } | 
    Export-Csv -Path (Join-Path $outputDir "RecycleBin_Contents.csv") -NoTypeInformation

Write-Log "分析完成。結果已導出到 $outputDir\RecycleBin_Contents.csv"

Write-Host "分析完成。請查看 $outputDir 目錄下的 CSV 文件和日誌文件。"

image

總結

透過分析這些數位鑑識檔案,調查人員可以收集有關使用者行為、系統事件和潛在惡意行為的證據。對這些檔案類型的全面了解對於在 Windows 作業系統上進行徹底的數位鑑識調查很重要。

小試身手

  1. 在 Windows 數位鑑識中,以下哪種檔案類型不包含使用者最近存取檔案的資訊?
    A) LNK 檔案
    B) 預讀檔案
    C) 跳躍清單檔案
    D) 系統登錄檔

    答案: D
    解析: LNK 檔案、預讀檔案和跳躍清單檔案都包含有關使用者最近存取檔案的資訊。系統登錄檔雖然包含重要的系統設定資訊,但不直接記錄使用者最近存取的檔案。

  2. 下列哪個工具最適合用來分析 Windows 預讀檔案?
    A) JumpList Explorer
    B) Browser History Viewer
    C) PECmd
    D) RBCmd

    答案: C
    解析: PECmd (Prefetch Explorer Command Line) 是專門用來分析 Windows 預讀檔案的工具。JumpList Explorer 用於跳躍清單,Browser History Viewer 用於瀏覽器歷史,RBCmd 用於回收筒分析。

  3. 在進行 Windows 數位鑑識時,以下哪種情況不需要進行數位鑑識調查?
    A) 懷疑發生資料外洩
    B) 系統例行性軟體更新
    C) 員工離職時的資料檢查
    D) 系統遭受勒索軟體攻擊

    答案: B
    解析: 系統例行性軟體更新是正常的維護操作,通常不需要進行數位鑑識調查。其他選項如資料外洩懷疑、員工離職檢查和勒索軟體攻擊都是可能需要進行數位鑑識的情況。

  4. 使用 PowerShell 分析 Windows 事件日誌時,以下哪個命令可以用來查詢成功登入事件?
    A) Get-WinEvent -LogName Security
    B) Get-EventLog -LogName Security
    C) Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624}
    D) Get-EventLog -FilterHashtable @{LogName='Security';ID=4624}

    答案: C
    解析: Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} 是正確的 PowerShell 命令,用於查詢 Security 日誌中 ID 為 4624 的成功登入事件。

  5. 在分析資源回收筒時,檔案名稱以什麼開頭的檔案包含被刪除檔案的原始資訊?
    A) $R
    B) $I
    C) $D
    D) $S

    答案: B
    解析: 在資源回收筒中,$I 開頭的檔案包含被刪除檔案的原始路徑、大小和刪除時間等資訊。$R 開頭的檔案是被刪除的實際檔案內容。

藍隊閱讀完文章後的後續行動清單

  1. 建立數位鑑識工具箱:
    • 下載並安裝文中提到的各種工具,如 PECmd, JumpList Explorer, Browser History Viewer 等。
    • 確保這些工具保持最新版本。
  2. 制定數位鑑識流程:
    • 根據文章中描述的各種情境,制定相應的數位鑑識流程和檢查清單。
    • 確保流程包含證據收集、保存、分析和報告撰寫等步驟。
  3. 培訓團隊成員:
    • 組織培訓課程,讓團隊成員熟悉各種 Windows 數位鑑識技術和工具的使用。
    • 進行模擬演練,提高團隊的實際操作能力。
  4. 建立基線:
    • 在正常運作的系統上收集各類型的鑑識資料,建立基準線以便將來比較。
  5. 自動化腳本開發:
    • 基於文章中提供的 PowerShell 腳本,開發更多自動化工具以提高鑑識效率。
  6. 更新安全政策:
    • 根據文章中提到的各種鑑識技術,審查並更新組織的安全政策,特別是關於日誌保留和系統監控的部分。

上一篇
Day24:藍隊提升技術力:數位鑑識 (6)─雜湊值與 metadata 實作練習
下一篇
Day26:藍隊提升技術力:數位鑑識 (8)─針對 Linux 數位鑑識尋找有用資訊
系列文
資安這條路:系統化學習藍隊技術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言